#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct KVP{
    char key[5][15];
    char value[5][15];}p1;
int main()
{
    char step1[4][11];
    char str[100];
    char input[11]={0};
    char kvp[11][11];char ccb[5][15];//二维数组的第一个数表示行//数组的最后一个位置被填满了的话，会没有\0。输出时会不断输出。
    int j=0;
    int i=0;int k=0;
    int line=0;
    char rest=0;//读取\n

    FILE *file;
    file=fopen("data.txt","r");//du wen jian
    while(fgets(str,sizeof(str),file)!=NULL){//
        strcpy(kvp[j],str);
        j++;
    }
    fclose(file);//关闭文件

    while(i<12){
        if(strchr(kvp[i],':')!=NULL)//找冒号，存储有冒号的行。
        {
            strcpy(step1[k],kvp[i]);
            i++;
            k++;
        }
        else
        {
            i++;
        }
    }

    for(line=0;line<4;line++){
        int kvppoint=(strlen(strstr(step1[line],":")));
        int key=strlen(step1[line])-kvppoint;
        int value=kvppoint-2;//除去“：”和“\n”。
        for(int k=0;k<key;k++){
            p1.key[line][k]=step1[line][k];//存键
        }
        for(int v=0;v<value;v++){
            p1.value[line][v]=step1[line][key+1+v];//存值
        }
    }

    int jinitaimei=1;
    int Error=0;
    printf("please enter:   ");
    scanf("%[^\n]",&input);//读取除换行符以外的所有
    rest=getchar();
    rest='\0';//除掉\n
    while(jinitaimei>0){
        int a=strcmp(input,"Quit");
        if(a!=0){
            for(int num=0;num<4;num++){
                if(strstr(p1.key[num],input)!=NULL)
                {
                    printf("%s\n",p1.value[num]);
                }
                else{
                    Error++;
                }
            }
            if(Error==4){
                printf("Error\n");
            }
            printf("please enter:   ");
            scanf("%[^\n]",&input);
            rest=getchar();
            rest='\0';
        }
        else{
            exit(0);
        }
        Error=0;
    }
    return 0;
}